#include "emis.h"

using namespace std;
using namespace MAN;

static void clear_print(void )
{
	system("clear");
	puts("╭════════════════════════════════════════════════════╮");  
   	puts("│        欢迎下次使用！　ヾ（￣▽￣）Ｂｙｅ～Ｂｙｅ～ │");  
	puts("╰════■□■□══════════════════════════════════■□■□══════╯"); 
	sleep(1);
	system("clear");
	return;
}

void menu(void)
{
	int choice;
	
	ManagerViewConsoleImpl manager;
	ServiceViewConsoleImpl service;

	while(1)
	{
		do
		{
			system("clear");
			puts("╭════════════════════════════════════════════════════╮");  
   			puts("│               ZhiZhen   企业信息管理系统           │");  
		    puts("╰════■□■□══════════════════════════════════■□■□══════╯"); 
		    puts("");
			cout << " 		  1、进入管理子系统"<< endl;
			cout << " 		  2、进入业务子系统" << endl;
			cout << " 		  3、返回登录界面"<< endl;
			puts("");
			puts("╭════════════════════════════════════════════════════╮"); 
			puts("╰════■□■□══════════════════════════════════■□■□══════╯"); 
			puts("");
			cout << "		  请选择:";		
			cin >> choice;
			clear_stdin();
		}while(choice <1 || choice > 3);

		switch(choice)
		{
			case 1: manager.menu();break;
			case 2: service.menu(); break;
			case 3:  return ;
		}
		
	}
}

void login_menu()
{
	int choice = 0;
	while(1)
	{
		do
		{
			system("clear");
			puts("╭════════════════════════════════════════════════════╮");  
			puts("│               　  管理员登录  　   　　　　  　    │");  
			puts("╰════■□■□══════════════════════════════════■□■□══════╯"); 
			puts("");
			cout << "		 1、超级管理员登录:"<< endl;
			cout << "		 2、业务管理员登录:"<< endl;
			cout << "		 3、退出系统:"<< endl;
			puts("");
			puts("╭════════════════════════════════════════════════════╮"); 
			puts("╰════■□■□══════════════════════════════════■□■□══════╯");
			puts("");
			cout <<"		请输入选择：" ;
			clear_stdin();
			cin >> choice;

		}while(choice < 1 || choice >3 );

		switch(choice)
		{
			case 1:root_login();break;
			case 2:buss_login();break;
			case 3: clear_print();return;
		}

	}
}

void root_login(void)
{
	while(1)
	{
		system("clear");
		puts("╭════════════════════════════════════════════════════╮");  
		puts("│               　  超级管理员登录  　　　     　    │");  
		puts("╰════■□■□══════════════════════════════════■□■□══════╯"); 
		puts("");
				
		char Password[20] ="123456"; //超级用户密码
		fflush(stdin);
		char* pass=getpass("		Password: ");      //使用getpass函数获取密码
		if(strcmp(pass,Password) == 0)
		{
			break;
		}
		else
		{
			system("clear");
			cout << "　密 码 错 误　！"<< endl;
			clear_stdin();
			anykey_continue();
			return;
		}
	}
	menu();
}

void buss_login(void)
{
	readfile();
	while(1)
	{
		system("clear");
		puts("╭════════════════════════════════════════════════════╮");  
		puts("│               　  业务管理员登录  　　　     　    │");  
		puts("╰════■□■□══════════════════════════════════■□■□══════╯"); 
		puts("");
		int man_id;
		cout << "		请输入管理员ID: "	;
		cin >> man_id;	
		char* pass=getpass("		Password: ");      //使用getpass函数获取密码
		if(search(man_id,pass))
		{
			break;
		}
		else
		{
			system("clear");
			cout << "　密 码 错 误　！"<< endl;
			clear_stdin();
			anykey_continue();
			return;
		}
	}
	menu();
	
}

void readfile(void)
{
	FILE* frp= fopen("account/managers.dat","rb");
	if(frp == NULL)
	{
		return ;
	}
	
	Manager man_tmp;
	
	while(1)
	{	
		int ret = fread(&man_tmp,sizeof(Manager),1,frp);
		
		if(ret <= 0)
		{
			break;
		}
		vec_man.push_back(man_tmp);		
	}
	return ;
}

bool search(int id,const char *pass)
{

	for(unsigned int i = 0; i < vec_man.size(); i++)
	{
		if( vec_man[i].id == id  && (strcmp(vec_man[i].password,pass) == 0) )
		{
			return true;
		}
	}
	return false;
}